﻿function showUserStatistics(username) {
	if (refreshWin('showUserStatistics_' + username)) return;
	getUserStatistics({
				username : username,
				success : onload
			});

	function onload(data) {
		var sta_store = new Ext.data.Store({
					autoLoad : true,
					proxy : new Ext.data.MemoryProxy(data.statistics),
					reader : new Ext.data.JsonReader({
								id : 'code'
							}, ['code', 'title', 'num'])
				});
		var sta_cm = new Ext.grid.ColumnModel([{
					header : 'Status',
					sortable : true,
					dataIndex : 'title',
					renderer : sys.rd.colorstatus
				}, {
					header : 'Count',
					sortable : true,
					dataIndex : 'num',
					width : 50
				}]);
		var sta_grid = new Ext.grid.GridPanel({
					region : 'west',
					width : 350,
					split : true,
					loadMask : {
						msg : '载入中...'
					},
					viewConfig : {
						forceFit : true
					},
					store : sta_store,
					cm : sta_cm
				});

		var chart_store = new Ext.data.Store({
					proxy : new Ext.data.MemoryProxy(data.statistics),
					reader : new Ext.data.JsonReader({
								id : 'code'
							}, ['code', 'title', 'num'])
				});
		chart_store.load({
					callback : function() {
						chart_store.filterBy(function(record, id) {
									return record.data.code < 20
								})
					}
				});
		var chart = new Ext.chart.PieChart({
					region : 'center',
					store : chart_store,
					dataField : 'num',
					categoryField : 'title',
					series : [{
								style : {
									colors : sys.rd.colors
								}
							}]
				});

		var solve_store = new Ext.data.Store({
					autoLoad : true,
					proxy : new Ext.data.MemoryProxy(data.problemAccept),
					reader : new Ext.data.JsonReader({
								id : 'rid'
							}, ['rid', 'pid', 'problemTitle', 'accept', 'submit', 'exeTime',
									'exeMem', 'lang', 'langCode', 'codeLen', 'allowCode'])
				});
		var solve_cm = new Ext.grid.ColumnModel([{
					header : 'PID',
					sortable : false,
					dataIndex : 'pid',
					renderer : sys.rd.pid
				}, {
					header : 'Submitions',
					sortable : false,
					dataIndex : 'submit',
					renderer : sys.rd.acsubmit
				}, {
					header : 'ExeTime',
					sortable : false,
					dataIndex : 'exeTime',
					renderer : sys.rd.exetime
				}, {
					header : 'ExeMemory',
					sortable : false,
					dataIndex : 'exeMem',
					renderer : sys.rd.exemem
				}, {
					header : 'CodeLength',
					sortable : false,
					dataIndex : 'codeLen',
					renderer : sys.rd.codelen
				}, {
					header : 'Language',
					sortable : false,
					dataIndex : 'lang'
				}]);
		var solve_grid = new Ext.grid.GridPanel({
					title : '<center>通过题目</center>',
					region : 'center',
					loadMask : {
						msg : '载入中...'
					},
					viewConfig : {
						forceFit : true
					},
					store : solve_store,
					cm : solve_cm
				});

		var fail_store = new Ext.data.Store({
					autoLoad : true,
					proxy : new Ext.data.MemoryProxy(data.problemFail),
					reader : new Ext.data.JsonReader({
								id : 'pid'
							}, ['pid', 'problemTitle', 'submit'])
				});
		var fail_cm = new Ext.grid.ColumnModel([{
					header : 'PID',
					sortable : false,
					dataIndex : 'pid',
					renderer : sys.rd.pid
				}, {
					header : 'Submitions',
					sortable : false,
					dataIndex : 'submit'
				}]);
		var fail_grid = new Ext.grid.GridPanel({
					title : '<center>失败题目</center>',
					region : 'east',
					split : true,
					width : 200,
					loadMask : {
						msg : '载入中...'
					},
					viewConfig : {
						forceFit : true
					},
					store : fail_store,
					cm : fail_cm
				});
		var toolbar = new Ext.Toolbar({
					items : [{
								text : '用户比较',
								iconCls : 'compare-icon',
								handler : function() {
									if (sys.guest)
										compareUser(data.username);
									else
										compareUser({
													usernameA : sys.user.username,
													usernameB : data.username
												});
								}
							}, new Ext.Button({
										text : '查看提交',
										iconCls : 'status-icon',
										handler : function() {
											showStatusList({
														username : data.username
													});
											win.close();
										}
									}), new Ext.Toolbar.Fill(), {
								text : '关闭',
								iconCls : 'ok-icon',
								handler : function() {
									win.close();
								}
							}]
				});

		var win = new Ext.Window({
					id : 'showUserStatistics_' + data.username,
					title : '用户统计  - ' + data.username,
					iconCls : 'statistics-icon',
					layout : 'border',
					manager : ui.windows,
					width : 700,
					height : 500,
					minWidth : 600,
					minHeight : 400,
					items : [{
								region : 'north',
								layout : 'border',
								height : 200,
								border : false,
								split : true,
								collapsible : true,
								hideCollapseTool : true,
								collapseMode : 'mini',
								items : [sta_grid, chart]
							}, {
								region : 'center',
								layout : 'border',
								border : false,
								items : [solve_grid, fail_grid]
							}],
					bbar : toolbar
				});
		win.show();
	}
}

function getUserStatistics(obj) {
	ajax({
				url : url.getUserStatistics,
				params : {
					username : obj.username
				},
				success : obj.success
			});
}